package com.congee02.sw;

public class MaxVowels {

    public int maxVowels(String s, int k) {

        char[] cs = s.toCharArray();
        int n = cs.length;

        // 窗口维护的变量
        int sum = 0;

        // 初始窗口
        for (int i = 0 ; i < k ; i ++ ) {
            if (isVowel(cs[i])) {
                sum ++;
            }
        }

        int ans = sum;

        // 移动窗口
        for (int r = k ; r < n ; r ++ ) {
            // [l, r]
            int l = r - k + 1;

            // 检查过期元素
            if (isVowel(cs[l - 1])) {
                sum --;
            }
            // 检查新加入的元素
            if (isVowel(cs[r])) {
                sum ++;
            }

            // 当前窗口已经满足要求的性质，为可行解
            ans = Math.max(ans, sum);

        }

        return ans;
    }

    private boolean isVowel(char x) {
        return x == 'a' || x == 'e' || x == 'i' || x == 'o' || x == 'u';
    }

}
